From 8ade45013cd28181af5692d12a7dd9b8b38526f0 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 3 Jun 2008 17:39:20 +0000 Subject: [PATCH] =?utf8?q?Bug=20535303=20=E2=80=93=20add=20=5Fget=5Fimplem?= =?utf8?q?entation=20to=20GtkStatusIcon?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2008-06-03 Colin Walters Bug 535303 – add _get_implementation to GtkStatusIcon * gtk/gtkstatusicon.c (gtk_status_icon_get_x11_window_id): New function to retrieve internal X11 window ID, useful for libnotify. * gtk/gtkstatusicon.h: Prototype it. * docs/reference/gtk/gtk-sections.txt: Add to docs. * gtk/gtk.symbols: Export it. svn path=/trunk/; revision=20304 --- ChangeLog | 10 +++++++++ docs/reference/gtk/gtk-sections.txt | 1 + gtk/gtk.symbols | 1 + gtk/gtkstatusicon.c | 34 +++++++++++++++++++++++++++++ gtk/gtkstatusicon.h | 2 ++ 5 files changed, 48 insertions(+) diff --git a/ChangeLog b/ChangeLog index be7d51f162..70165ae039 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-06-03 Colin Walters + + Bug 535303 – add _get_implementation to GtkStatusIcon + + * gtk/gtkstatusicon.c (gtk_status_icon_get_x11_window_id): New + function to retrieve internal X11 window ID, useful for libnotify. + * gtk/gtkstatusicon.h: Prototype it. + * docs/reference/gtk/gtk-sections.txt: Add to docs. + * gtk/gtk.symbols: Export it. + 2008-06-03 Tor Lillqvist * gtk/updateiconcache.c (build_cache): Use g_open(). diff --git a/docs/reference/gtk/gtk-sections.txt b/docs/reference/gtk/gtk-sections.txt index b262ac6af1..b66a16147f 100644 --- a/docs/reference/gtk/gtk-sections.txt +++ b/docs/reference/gtk/gtk-sections.txt @@ -3402,6 +3402,7 @@ gtk_status_icon_get_blinking gtk_status_icon_is_embedded gtk_status_icon_position_menu gtk_status_icon_get_geometry +gtk_status_icon_get_x11_window_id GTK_TYPE_STATUS_ICON diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 19cb6f13c2..70d0add28f 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -1123,6 +1123,7 @@ gtk_status_icon_get_blinking gtk_status_icon_is_embedded gtk_status_icon_position_menu gtk_status_icon_get_geometry +gtk_status_icon_get_x11_window_id #endif #endif diff --git a/gtk/gtkstatusicon.c b/gtk/gtkstatusicon.c index 060d260f72..4e8a008dd3 100755 --- a/gtk/gtkstatusicon.c +++ b/gtk/gtkstatusicon.c @@ -41,6 +41,10 @@ #include "gtkprivate.h" #include "gtkwidget.h" +#ifdef GDK_WINDOWING_X11 +#include "gdk/x11/gdkx.h" +#endif + #ifdef GDK_WINDOWING_WIN32 #include "gtkicontheme.h" #include "gtklabel.h" @@ -2095,6 +2099,36 @@ gtk_status_icon_get_geometry (GtkStatusIcon *status_icon, #endif /* GDK_WINDOWING_X11 */ } +/** + * gtk_status_icon_get_x11_window_id: + * @status_icon: a #GtkStatusIcon + * + * This function is only useful on the X11/freedesktop.org platform. + * It returns a window ID for the widget in the underlying + * status icon implementation. This is useful for the Galago + * notification service, which can send a window ID in the protocol + * in order for the server to position notification windows + * pointing to a status icon reliably. + * + * This function is not intended for other use cases which are + * more likely to be met by one of the non-X11 specific methods, such + * as gtk_status_icon_position_menu(). + * + * Return value: An 32 bit unsigned integer identifier for the + * underlying X11 Window + * + * Since: 2.14 + */ +guint32 +gtk_status_icon_get_x11_window_id (GtkStatusIcon *status_icon) +{ +#ifdef GDK_WINDOWING_X11 + gtk_widget_realize (GTK_WIDGET (status_icon->priv->tray_icon)); + return GDK_WINDOW_XID (GTK_WIDGET (status_icon->priv->tray_icon)->window); +#else + return 0; +#endif +} #define __GTK_STATUS_ICON_C__ #include "gtkaliasdef.c" diff --git a/gtk/gtkstatusicon.h b/gtk/gtkstatusicon.h index ed51a2745c..dbb95207e0 100755 --- a/gtk/gtkstatusicon.h +++ b/gtk/gtkstatusicon.h @@ -122,6 +122,8 @@ gboolean gtk_status_icon_get_geometry (GtkStatusIcon *st GdkRectangle *area, GtkOrientation *orientation); +guint32 gtk_status_icon_get_x11_window_id (GtkStatusIcon *status_icon); + G_END_DECLS #endif /* __GTK_STATUS_ICON_H__ */ -- 2.30.2